package inge_soft.gestoriusNuevo.business.controller.validation;

import inge_soft.gestoriusNuevo.persistence.entity.implementation.Localidad;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.TipoDomicilio;

import org.zkoss.bind.Form;
import org.zkoss.bind.ValidationContext;
import org.zkoss.bind.validator.AbstractValidator;

public class ValidadorCrearModificarDomicilio extends AbstractValidator {

	public void validate(ValidationContext contexto) {
		
		//Obtengo el "formulario" para acceder a algo asi como las propiedades bindiadas
		Form form = (Form) contexto.getProperty().getValue();
		
		//DEPURACION (NO BORRAR, sirve para ver posta los "field names")
		//System.out.println("Field names: " + form.getFieldNames().toString());
		//Field names: [domicilio.localidad, tipoDomicilio, domicilio.calle, domicilio.numero, domicilio.depto, domicilio.piso]
		//DEPURACION
		
		Localidad localidad = (Localidad) form.getField("domicilio.localidad");
		TipoDomicilio tipoDomicilio = (TipoDomicilio) form.getField("tipoDomicilio");
		
		String calle = (String) form.getField("domicilio.calle");
		String altura = (String) form.getField("domicilio.numero");
		
		validarLocalidad(contexto, localidad);
		validarTipoDomicilio(contexto, tipoDomicilio);
		validarCalle(contexto, calle);
		validarAltura(contexto, altura);
	}

	private void validarLocalidad(ValidationContext contexto , Localidad localidad) {
		if (localidad == null) {
			this.addInvalidMessage(contexto, "localidad", "Recuerde ingresar una localidad");
		}
	}
	
	private void validarTipoDomicilio(ValidationContext contexto , TipoDomicilio tipoDomicilio) {
		if (tipoDomicilio == null) {
			this.addInvalidMessage(contexto, "tipo", "Recuerde ingresar un tipo de domicilio");
		}
	}
	
	private void validarCalle(ValidationContext contexto , String calle) {
		if (calle == null || calle.isEmpty()) {
			this.addInvalidMessage(contexto, "calle", "Recuerde ingresar calle");
		}
	}
	
	private void validarAltura(ValidationContext contexto , String altura) {
		if (altura == null || altura.isEmpty()) {
			this.addInvalidMessage(contexto, "altura", "Recuerde ingresar una altura");
		}
	}
	
	
}
